/**
 * 问题实体接口
 * 定义问题的完整数据结构
 */
export interface Question {
  /** 问题唯一标识符 */
  id: string;
  /** 问题标题 */
  title: string;
  /** 问题内容ID，关联到内容表 */
  contentId: string;
  /** 提问用户ID */
  userId: string;
  /** 问题状态（如：待回答、已回答、已关闭等） */
  status?: string;
  /** 问题优先级（如：低、中、高、紧急） */
  priority?: string;
  /** 浏览次数 */
  viewCount?: number;
  /** 点赞数量 */
  likeCount?: number;
  /** 回答数量 */
  answerCount?: number;
  /** 是否为AI生成的问题 */
  aiGenerated?: boolean;
  /** 创建时间 */
  createdAt?: Date;
  /** 最后更新时间 */
  updatedAt?: Date;
}

/**
 * 创建问题请求接口
 * 定义创建新问题时需要的数据结构
 */
export interface CreateQuestionRequest {
  /** 问题标题 */
  title: string;
  /** 问题内容 */
  content: string;
  /** 附件信息 - MinIO文件路径数组 */
  attachments?: string[];
  /** 提问用户ID */
  userId: string;
  /** 问题状态（可选，默认为待回答） */
  status?: string;
  /** 问题优先级（可选，默认为普通） */
  priority?: string;
}

/**
 * 更新问题请求接口
 * 定义更新问题时可修改的字段
 */
export interface UpdateQuestionRequest {
  /** 问题ID */
  id: string;
  /** 问题标题 */
  title?: string;
  /** 问题内容 */
  content?: string;
  /** 附件信息 - MinIO文件路径数组 */
  attachments?: string[];
  /** 问题状态 */
  status?: string;
  /** 问题优先级 */
  priority?: string;
  /** 浏览次数 */
  viewCount?: number;
  /** 点赞数量 */
  likeCount?: number;
  /** 回答数量 */
  answerCount?: number;
  /** 是否为AI生成 */
  aiGenerated?: boolean;
}

/**
 * 问题查询参数接口
 * 定义查询问题列表时的筛选和分页参数
 */
export interface QuestionQueryParams {
  /** 页码，从1开始 */
  page?: number;
  /** 每页数量，默认10 */
  limit?: number;
  /** 按状态筛选 */
  status?: string;
  /** 按优先级筛选 */
  priority?: string;
  /** 按用户ID筛选 */
  userId?: string;
  /** 搜索关键词（在标题中搜索） */
  search?: string;
  /** 排序字段 */
  sortBy?: 'createdAt' | 'updatedAt' | 'viewCount' | 'likeCount';
  /** 排序方式：升序或降序 */
  sortOrder?: 'asc' | 'desc';
}

/**
 * 问题详情接口（包含完整内容）
 * 定义问题详情的完整数据结构
 */
export interface QuestionDetail extends Question {
  /** 问题内容 */
  content?: string;
  /** 附件信息 - MinIO文件路径数组 */
  attachments?: string[];
}

/**
 * 问题列表响应接口
 * 定义问题列表查询的返回数据结构
 */
export interface QuestionListResponse {
  /** 问题列表 */
  questions: Question[];
  /** 总数量 */
  total: number;
  /** 当前页码 */
  page: number;
  /** 每页数量 */
  limit: number;
  /** 总页数 */
  totalPages: number;
}